package com.java.al.resultset;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class ForResultSet {

	/**
	 * @param args
	 * @throws SQLException
	 * @throws ClassNotFoundException
	 */
	public static void main(String[] args) throws SQLException,
			ClassNotFoundException {
		Class.forName("oracle.jdbc.driver.OracleDriver");
		Connection con = DriverManager.getConnection(
				"jdbc:oracle:thin:@10.110.174.161:1521:OSSDB", "yikest",
				"xnkL!789");
		//第一种：利用ResultSet的getRow方法来获得ResultSet的总行数

		Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
				ResultSet.CONCUR_UPDATABLE);
		ResultSet rset = stmt.executeQuery("select * from yourTableName");
		rset.last();
		int rowCount = rset.getRow(); //获得ResultSet的总行数

		//第二种：利用循环ResultSet的元素来获得ResultSet的总行数

		//		ResultSet rset = stmt.executeQuery("select * from yourTableName"); 
		//		int rowCount = 0; 
		//		while(rset.next()) { 
		//		   rowCount++; 
		//		}

		//rowCount就是ResultSet的总行数。

		//		
		//		ResultSet rset = stmt.executeQuery("select count(*) totalCount from yourTableName"); 
		//		int rowCount = 0; 
		//		if(rset.next()) { 
		//		   rowCount=rset .getInt("totalCount "); 
		//		}

		//rowCount就是ResultSet的总行数。

		//Java中获得ResultSet的总列数是非常简单事情，因为Java中ResultSet提供了ResultSetMetaData工具类,ResultSetMetaData 是ResultSet的元数据的集合说明。

		//java获得ResultSet总列数的代码如下：

		//		Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); 
		//		ResultSet rset = stmt.executeQuery("select * from yourtable"); 
		ResultSetMetaData rsmd = rset.getMetaData();
		int columnCount = rsmd.getColumnCount();

		//columnCount 就是ResultSet的总列数。

		//Java中有个元数据，交MetaData，这个是记录数据库和表本身信息的信息， 
		//		ResultSet rs=st.executeQuery("select * from student2"); 
		//获取结果集元数据 
		//		ResultSetMetaData rsmd=rs.getMetaData(); 
		//总列数 
		int size = rsmd.getColumnCount();
		//打印列名 
		for (int i = 1; i <= size; i++) {
			System.out.print(rsmd.getColumnName(i) + "\t");
		}
		System.out.println();
		//打印列在数据库中的类型 
		for (int i = 1; i <= size; i++) {
			System.out.print(rsmd.getColumnTypeName(i) + "\t");
		}
		System.out.println();
		//打印列的类型大小 
		for (int i = 1; i <= size; i++) {
			System.out.print(rsmd.getColumnDisplaySize(i) + "\t");
		}
		System.out.println();
		//别名 
		for (int i = 1; i <= size; i++) {
			System.out.print(rsmd.getColumnLabel(i) + "\t");
		}
		System.out.println();
		//打印结果集中数据 
		//		while(rs.next()) 
		//		{ 
		//		for(int i=1;i<=size;i++) 
		//		{ 
		//		System.out.print(rs.getString(i)+"\t"); 
		//		} 
		//		System.out.println(); 
		//		}

	}

}
